package com.cicigodd.brick.plug.system.menu.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cicigodd.brick.plug.common.response.PageResult;
import com.cicigodd.brick.plug.common.tree.node.ElementTreeNode;
import com.cicigodd.brick.plug.system.menu.api.SysMenuServiceApi;
import com.cicigodd.brick.plug.system.menu.entity.SysMenu;
import com.cicigodd.brick.plug.system.menu.request.SysMenuAddRequest;
import com.cicigodd.brick.plug.system.menu.request.SysMenuDeleteRequest;
import com.cicigodd.brick.plug.system.menu.request.SysMenuDetailRequest;
import com.cicigodd.brick.plug.system.menu.request.SysMenuEditRequest;
import com.cicigodd.brick.plug.system.menu.request.SysMenuListRequest;
import com.cicigodd.brick.plug.system.menu.response.RouterResponse;
import com.cicigodd.brick.plug.system.menu.response.SysMenuDetailResponse;
import com.cicigodd.brick.plug.system.menu.response.SysMenuListResponse;
import java.util.List;

/**
 * 菜单管理
 *
 * @author cicigodd
 * @date 2022/12/12 16:28:23
 */
public interface SysMenuService extends IService<SysMenu>, SysMenuServiceApi  {

    /**
     * 添加
     *
     */
    void add(SysMenuAddRequest sysMenuAddRequest);

    /**
     * 删除
     *
     */
    void delete(SysMenuDeleteRequest sysMenuDeleteRequest);

    /**
     * 编辑
     *
     */
    void edit(SysMenuEditRequest sysMenuEditRequest);

    /**
     * 详情
     *
     */
    SysMenuDetailResponse detail(SysMenuDetailRequest sysMenuDetailRequest);

    /**
     * 分页列表
     *
     */
    PageResult<SysMenuListResponse> list(SysMenuListRequest sysMenuListRequest);

    /**
     * 获取路由菜单
     * @return
     */
    List<RouterResponse> getRouters();

    /**
     * 获取菜单树
     * @return
     */
    List<ElementTreeNode> tree();

    List<ElementTreeNode> treeAll();
}